<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>量词 +, *, ? 和 {n}</title>
</head>
<body>
    <script>
        // 数量 {n} 例如：/\d{5}/ => \d\d\d\d\d
        console.log("I'm 12345 years old.".match(/\d{5}/).toString()) // 12345
    </script>

    <script>
        // 范围 {3,5} 例如：/\d{3,5}/匹配3-5位的数字
        console.log("1 22 333 4444 55555".match(/\d{3,5}/g).toString()) // 333,4444,55555

        // 省略上限位数上线
        console.log("1 22 333 4444 55555".match(/\d{2,}/g).toString()) // 22,333,4444,55555

        // 例子
        let str1 = '+7(903)-123-45-67'
        console.log(str1.match(/\d{1,}/g).toString()) // 7,903,123,45,67
    </script>

    <script>
        // 缩写
        
        // + 表示一个或多个。 /\d+/ => /\d{1,}/ 相同
        let str2 = '+7(903)-123-45-67'
        console.log(str2.match(/\d+/g).toString()) // 7,903,123,45,67

        // ? 表示0个或1个。 /\d?/ => /\d{0,1}/ 相同
        let str3 = 'Should I write color or colour colouur?'
        // 模式 ou?r 查找 o，后跟零个或一个 u，然后是 r。
        console.log(str3.match(/colou?r/g).toString()) // color,colour
        
        // * 表示0个或多个。 /\d*/ => /\d{0,}/ 相同
        // \d0* 查找一个数字后面跟着任意数量的零（可能有很多或没有）的数字
        console.log('100 10 1'.match(/\d0*/g).toString()) // 100,10,1
        // 与 + 比较，表示1个或多个0
        console.log('100 10 1'.match(/\d0+/g).toString()) // 100,10
    </script>

    <script>
        // 示例：

        // 匹配小数正则
        let reg = /\d+\.\d+/g
        let s1 = '1 1.1 2 2.2 333.1'
        console.log(s1.match(reg).toString()) // 1.1,2.2,333.1

        // 匹配HTML标签
        let reg2 = /<\/?[a-z][a-z0-9]*>/gi
        let s2 = '<b>B</b> <div>div</div> <h1>p</h1>'
        console.log(s2.match(reg2).toString()) // <b>,</b>,<div>,</div>,<h1>,</h1>
    </script>
</body>
</html>